Computer virtualization is a technique that can involve encapsulating a physical computing machine platform into a virtual machine (VM) that is executed under the control of virtualization software running on a hardware computing platform (also referred to herein as “host system” or “host computer”). A group of hardware computing platforms may be organized as a cluster to provide the hardware resources for VMs.
Traditional network resource allocation techniques, such as shares, permit some VM data traffic to have higher priority over other VM traffic. However, such techniques do not provide guarantees on network bandwidth, particularly for egress traffic. For example, even if an application running in one VM and needing a minimum throughput for performance is given high priority, the effective priority for the high priority application is reduced when many VMs on the host share the same physical network interface device resource. As a result, the high priority application may not have the needed minimum bandwidth. Similar to virtual machine traffic, system traffic such as live VM migration traffic, virtual storage area network (VSAN) traffic, host-based replication (HBR) traffic, network file system (NFS) traffic, Internet Small Computer System Interface (iSCSI) traffic, and the like may also require network bandwidth guarantees. Traditional solutions do not provide bandwidth guarantees to such system traffic. In addition, traditional VM placement engines such as VMware® Distributed Resource Scheduler™ do not account for network bandwidth demands of VMs. Such placement engines may place multiple network-sensitive VMs on the same physical host system, thereby affecting their network performance.